﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Sockets;
using System.Net;
using System.Net.Mail;


namespace KPWeb.Class
{
    class IPAdressName
    {

        public static string GetIP()
        {
            IPHostEntry ipHostInfo = Dns.GetHostEntry(HttpContext.Current.Request.UserHostName);
            string ips = ipHostInfo.HostName + "\r\n";
            foreach (IPAddress ip in Dns.GetHostEntry(ipHostInfo.HostName).AddressList)
            {
                if (ip.AddressFamily == AddressFamily.InterNetwork)
                    ips += ip.ToString() + "\r\n";
            }
            return ips;
        }
    }

    class Mail
    {
        enum Port { Pop3 = 110, Smtp = 25 }

        static TcpClient client;

        /// <summary>
        /// Funkacja pytająca serwer SMTP, czy zna podany e-mail.
        /// </summary>
        /// <example>
        /// bool poprawny = Mail.Vrfy("damian.zieniewicz@am.edu.pl");
        /// </example>
        /// <param name="email">Adres e-mail do weryfikacji.</param>
        /// <returns>Zwraca true jeśli serwer zna adres.</returns>
        public static bool Vrfy(string email)
        {
            client = new TcpClient();
            client.Connect("mx01.am.edu.pl", (int)Port.Smtp);
            if (client.Connected)
            {
                string header = Receive();// (client);
                Send(string.Format("VRFY {0}\n", email));//, client);
                string response = Receive();// (client);
                client.Close();

                return response.StartsWith("252");
            }
            client.Close();

            return false;
        }

        private static string Receive()
        {
            NetworkStream response = client.GetStream();
            byte[] bytes = new byte[1023];
            int size = response.Read(bytes, 0, bytes.Length);

            return System.Text.Encoding.ASCII.GetString(bytes);
        }

        private static void Send(string s)
        {
            NetworkStream request = client.GetStream();
            byte[] bytes = System.Text.Encoding.ASCII.GetBytes(s);
            request.Write(bytes, 0, bytes.Length);
        }




        public static int SendMailaTemp(/*string nadawca,*/ string adresat, string temat, string tresc)
        {
            return 0;
        }




        public static int SendMaila(/*string nadawca,*/ string adresat, string temat, string tresc)
        {
            //Tworzymy wiadomość email 

       string wyslanoOd = "waldemar.sztulpa@wum.edu.pl";  //####
       //      string wyslanoOd = "awaria@wum.edu.pl";
            wyslanoOd = "KPWeb <" + wyslanoOd + ">";
           


            // adresat = "eliza.jakimiuk@wum.edu.pl";//#### na produkcji usunąć
           // adresat = "waldemar.sztulpa@wum.edu.pl";//#### na produkcji usunąć

            MailMessage wiadomosc = new MailMessage(wyslanoOd, adresat, temat, tresc);
            MailAddress ad = new MailAddress(wyslanoOd); 
            wiadomosc.Bcc.Add(ad);

            //Ustawiamy format wiadomości jako tekst 
            wiadomosc.IsBodyHtml = false;

            try
            {

                //Tworzymy klienta SMTP 
                SmtpClient klientSMTP = new SmtpClient();
                //Ustwaiamy nazwę serwera SMTP 
                klientSMTP.Host = "mx01.am.edu.pl";
                klientSMTP.UseDefaultCredentials = true;
                //Ustawiamy sposób dostarczania wiadomości//// było IIS waldek
                 klientSMTP.DeliveryMethod = SmtpDeliveryMethod.Network;
                //Wysyłamy wiadomość przechwytując wyjątek 
                klientSMTP.Send(wiadomosc);
                return 0;
            }
            catch (SmtpException ex)
            {
                return 1; // throw new ApplicationException("Klient SMTP wywołał wyjątek.", ex);
            }
        }









 
    }
}